#include <SFML/Graphics.hpp>
#include <vector>
#include <iostream>
#include "ToolBox.h"
#include "Tool.h"

using namespace std;
using namespace sf;

ToolBox::ToolBox(int x, int y) : TOOL_SIZE(60), positionX(x), positionY(y+30), actif(0){
}

/**************************************

Methode drawToolBox
Param : RenderWindow fenetre_de_destination, Event evenements

**************************************/
void ToolBox::drawToolBox(RenderWindow &app){
    Shape fondTitre,fondTool;
    Color color;
    String titre("Boite a outils");
    Sprite tool;
    int j=0,k=0;


    const Input &input = app.GetInput();


    for(int i=0;i<(int)Tool::getTools().size();i++){

        if(input.GetMouseX()>j*TOOL_SIZE+Tool::getBorderSize()+positionX && input.GetMouseX()<j*TOOL_SIZE-Tool::getBorderSize()+positionX+TOOL_SIZE
           && input.GetMouseY()>k*TOOL_SIZE+Tool::getBorderSize()+positionY && input.GetMouseY()<k*TOOL_SIZE-Tool::getBorderSize()+positionY+TOOL_SIZE){

            color = Color::White;
            if(actif){
                if(Tool::getTools()[i]->isActif()){
                    Tool::getTools()[i]->setActif(false);
                }else{
                    for(int j=0;j<(int)Tool::getTools().size();j++){
                        Tool::getTools()[j]->setActif(false);
                    }
                    Tool::getTools()[i]->setActif(true);
                }
            }
            if(false) {
            }
        }
        else{

            color = Color::Black;
        }
        if(Tool::getTools()[i]->isActif()){
            color = Color::Red;
        }


        tool = Tool::getTools()[i]->getLogo();
        tool.Resize(TOOL_SIZE-2*Tool::getBorderSize(),TOOL_SIZE-2*Tool::getBorderSize());
        tool.SetPosition(j*TOOL_SIZE+Tool::getBorderSize()+positionX, k*TOOL_SIZE+Tool::getBorderSize()+positionY);

        fondTool = Shape::Rectangle(j*TOOL_SIZE+Tool::getBorderSize()+positionX, k*TOOL_SIZE+Tool::getBorderSize()+positionY,j*TOOL_SIZE-Tool::getBorderSize()+positionX+TOOL_SIZE, k*TOOL_SIZE-Tool::getBorderSize()+positionY+TOOL_SIZE,Color::White,Tool::getBorderSize(),color);

        j++;
        if(j%2==0){
            j=0;
            k++;
        }

        app.Draw(fondTool);
        app.Draw(tool);
    }
    actif = false;

    fondTitre = Shape::Rectangle(positionX, positionY-30, positionX+2*TOOL_SIZE, positionY, Color::Black);
    titre.SetSize(20);
    titre.SetPosition(positionX+3,positionY-27);

    app.Draw(fondTitre);
    app.Draw(titre);
}

/*************************************

Methode setEvent
Param Event &evenement

*************************************/
void ToolBox::setEvent(Event &event){

    if(event.Type == Event::MouseButtonPressed){
        actif = 1;
    }else{
        actif = 0;
    }

}
